package com.zqh

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {

  def main(args: Array[String]): Unit = {

    // 创建SparkContext
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCountScala")
    val sc = new SparkContext(conf)

    // 读取本地文件   file:///  表示本地文件
    val lines: RDD[String] = sc.textFile("file:///E:\\IDEA_PRO\\scala\\word-count\\data\\wc.txt")

    // RDD转换
    val words: RDD[String] = lines.flatMap(line => line.split("\\s+")) // 使用正则表达式，得到所有的词

    val wordsMap: RDD[(String, Int)] = words.map(x => (x, 1))

    val result: RDD[(String, Int)] =  wordsMap.reduceByKey(_ + _)

    // 排序
    // 单词与次数调换位置
    result.map(x => (x._2,x._1))
    // 按照key降序
    result.map(x => (x._2,x._1)).sortByKey(false).collect

    // 输出结果
    result.foreach(println)

    // 关闭SparkContext
    sc.stop()

  }

}
